Not Knowing Your Random Number Generator Could Be Costly
نویسنده
چکیده
Introduction Have you played a video game lately? Purchased something on the web? Trained a Neural Network? Used a Genetic Algorithm for optimization? Run software from Microsoft? Applied textures to a photograph? Played the stock market? If the answer is “yes” to any of these questions, Random Number Generator (RNG) have affected your life. Can you trust your Random Number Generator? Can you test its performance? Does its performance really matter? In addition to some RNG related horror stories, this article presents guidelines for performing basic random number evaluations. It also provides numerous useful links and resources. My interest in random numbers was re-kindled recently while determining whether a particular neural network prediction was better than chance or any of several other prediction algorithms. I was using a Monte-Carlo simulation in Microsoft Visual Basic (tied into Microsoft Excel). To ensure that the code was working correctly, I selected several outcomes for which I could compute the probability of occurrences and associated variance. With 1,000,000 trials, I expected three hits, yet I did not receive one. Even after repeating the experiment several more times, I never obtained the expected outcome, which was highly improbable. Out of frustration, I modified the output of the Visual Basic random number generator by shuffling the numbers using a Bays-Durham Shuffle (a method for shuffling the order of the output of a random number generator as shown in figure 1). This reduced the correlation between successively generated numbers that interacted with my code, and I started approaching the expected number of hits (0-5 hits per run of 1,000,000,000 trials). Later testing verified that the Visual Basic RNG fails several common tests for random numbers. However, as discussed later, when the Visual Basic RNG is used in conjunction with a BaysDurham shuffle, it passes more of the tests. This experience led me to start collecting RNGs, and methods for testing them. I am currently developing a software package that provides access to over 250 commonly used RNGs, and 13,000 lesser-known RNGs and variants. This software will be available shortly at www.extremeet.com.
منابع مشابه
Qualifying Exam Cs 661: System Simulation Summer 2013
– For any problem that asks you to provide an algorithm, be sure to give a step-by-step algorithm. Do not explain how to implement your algorithm in Arena or Excel, but rather, you should provide an algorithm (i.e., pseudo-code) that can be implemented in any language. Also, for any random variates needed by your algorithm, be sure to explicitly provide the steps needed to generate the random v...
متن کاملPCAI 52 - 59 - 16.3 - Random N.PDF
Introduction Have you played a video game lately? Purchased something on the web? Trained a Neural Network? Used a Genetic Algorithm for optimization? Run software from Microsoft? Applied textures to a photograph? Played the stock market? If the answer is “yes” to any of these questions, Random Number Generator (RNG) have affected your life. Can you trust your Random Number Generator? Can you t...
متن کاملSome Remarks about Random Testing
The use of a pseudo-random number generator to produce test cases for software appears not to be widely used, although the method has been reported in the literature for many years [1, 2, 4]. This paper draws on experience with this technique in two areas: compilers and software components. The use of a pseudo-random number generator to produce test cases which are expected to reflect actual us...
متن کاملChapter 9 Random Numbers
This chapter describes algorithms for the generation of pseudorandom numbers with both uniform and normal distributions. This is the first number produced by the Matlab random number generator with its default settings. Start up a fresh Matlab, set format long, type rand, and it's the number you get. If all Matlab users, all around the world, all on different computers, keep getting this same n...
متن کاملHold Your Sessions: An Attack on Java Session-Id Generation
HTTP session-id’s take an important role in almost any web site today. This paper presents a cryptanalysis of Java Servlet 128-bit session-id’s and an efficient practical prediction algorithm. Using this attack an adversary may impersonate a legitimate client. Through the analysis we also present a novel, general space-time tradeoff for secure pseudo random number generator attacks.
متن کامل